/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pl.tewi.junit.annotations.processors;

import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.Statement;
import pl.tewi.contexts.ApplicationServerContext;

/**
 * Interfejs procesora przetwarzającego adnotacje umieszczone na metodzie testowej
 * @author Marcin Kwapisz
 */
public interface MethodAnnotationProcessor {

    /**
     * Metoda przetwarzająca adnotacje na poziomie metody testu
     * @param baseStatement początkowy statement bądź łańcuch do którego będą 
     * dołączane nowe statementy
     * @param testMethod metoda testowa
     * @param testObject obiekt testu
     * @param context kontekst serwera aplikacyjnego
     * @return przetworzony Junit statement. Do przekazanego statementa 
     * (bądź łańcucha) dołączane są nowe statementy związane z przetworzonymi adnotacjami.
     */
    Statement processAnnotations(Statement baseStatement,
            FrameworkMethod testMethod, Object testObject,
            ApplicationServerContext context);
}
